<?php
//------------------------------------------------------------ Contraintes d'accès de la page

	// on vérifie que cette page est appelée à partir de l'index et que l'utilisateur a le droit de consultation
	if(isset($_SESSION) && ($GLOBALS['USER']['level'] >= 2 || $GLOBALS['USER']['admin'])){
	
?>
<?php
//------------------------------------------------------------ Définition des variables d'affichage

	// variable indiquant la page sélectionnée
	if(isset($_GET['l']) && numericInt($_GET['l'])){ 
		$page = $_GET['l'];
	}else{
		$page = 1;
	}
		
	// variable indiquant l'ordre selon lequel on tri la liste
	if(isset($_GET['o'])){
		switch($_GET['o']){
		case 0: $ordre = 0; $ordreBDD = "ASC"; break;
		case 1: $ordre = 1; $ordreBDD = "DESC"; break;
		default: $ordre = 0; $ordreBDD = "ASC"; break;
		}
	}else{
		$ordre = 0;
		$ordreBDD = "ASC";
	}
	
	// variable indiquant la colonne selon laquelle on tri la liste
	if(isset($_GET['t'])){
		switch($_GET['t']){
		case 1: $tri = 1; $triBDD = "reference ".$ordreBDD; break;
		case 2: $tri = 2; $triBDD = "genre ".$ordreBDD.", espece ".$ordreBDD.", famille ".$ordreBDD.", variete ".$ordreBDD; break;
		default: $tri = 2; $triBDD = "genre ".$ordreBDD.", espece ".$ordreBDD.", famille ".$ordreBDD.", variete ".$ordreBDD; break;
		}
	}else{
		$tri = 2;
		$triBDD = $triBDD = "genre ".$ordreBDD.", espece ".$ordreBDD.", famille ".$ordreBDD.", variete ".$ordreBDD;
	}
	
	// Traitement des options
	$optionsSet = false;
	$optionsURL = "";
	
	if(isset($_POST['opt_seulDispo']) || isset($_GET['opt_seulDispo'])){
		$optionsURL .= "&amp;opt_seulDispo=1";
		$optionsSet = true;
	}
	if(isset($_POST['opt_seulNonVide']) || isset($_GET['opt_seulNonVide'])){
		$optionsURL .= "&amp;opt_seulNonVide=1";
		$optionsSet = true;
	}
	
?>
<?php
//------------------------------------------------------------ Récupération de la liste des sachets de graines

	// On compte le nombre total de sachets de graines enregistrés
	$nb_total_sachets_graines = 0;
	
	$query_compte_sachets_graines = "SELECT COUNT(*) ";
	$query_compte_sachets_graines .= "FROM sachet_graines sa ";
	$query_compte_sachets_graines .= "INNER JOIN entree en ON en.SAC_CODESACHETGRAINE = sa.CODESACHETGRAINE ";
	$query_compte_sachets_graines .= "LEFT JOIN sortie so ON so.CODESACHETGRAINE = sa.CODESACHETGRAINE ";
	// Si l'utilisateur a saisi des options
	if($optionsSet){
		if(isset($_POST['opt_seulNonVide']) || isset($_GET['opt_seulNonVide'])){
			$query_compte_sachets_graines .= "WHERE (sa.QUANTITEGRAINESDISPONIBLES > 0 OR sa.QUANTITEGRAINESDISPONIBLES IS NULL) ";
		}
	}
	$query_compte_sachets_graines .= "GROUP BY sa.CODESACHETGRAINE ";
	// Si l'utilisateur a saisi des options
	if($optionsSet){
		if(isset($_POST['opt_seulDispo']) || isset($_GET['opt_seulDispo'])){
			$query_compte_sachets_graines .= "HAVING COUNT(DISTINCT en.CODEENTREE) > COUNT(DISTINCT so.CODESORTIE) ";
		}
	}
	
	$result_compte_sachets_graines = mysql_query($query_compte_sachets_graines, $connexion) or logError("COMPTE SACHETS GRAINES-".$query_compte_sachets_graines."-".mysql_error());
	
	$tab_compte_sachets_graines = mysql_fetch_row($result_compte_sachets_graines);
	
	$nb_total_sachets_graines = $tab_compte_sachets_graines[0];
	
	mysql_free_result($result_compte_sachets_graines);
	
	// récupération des informations des sachets de graines
	$query_recuperation_liste_sachets_graines = "SELECT sa.CODESACHETGRAINE AS id, sa.REFERENCESACHETGRAINES AS reference, sa.QUANTITEGRAINESDISPONIBLES AS quantite, f.NOMFAMILLE AS famille, g.NOMGENRE AS genre, e.NOMESPECE AS espece, sesp.NOMSOUSESPECE AS sousespece, v.NOMVARIETE AS variete, nbe.nbEntrees, nbs.nbSorties, en.CODEPRETENTRANT AS pretEntrant, so.CODESACHETGRAINE AS sachets_grainesortant, so.CODEPRETSORTANT as pretSortant ";
	$query_recuperation_liste_sachets_graines .= "FROM sachet_graines sa ";
	$query_recuperation_liste_sachets_graines .= "INNER JOIN (SELECT SAC_CODESACHETGRAINE AS idSachetEntree, COUNT(*) AS nbEntrees FROM entree WHERE SAC_CODESACHETGRAINE IS NOT NULL GROUP BY SAC_CODESACHETGRAINE) nbe ON nbe.idSachetEntree = sa.CODESACHETGRAINE ";
	$query_recuperation_liste_sachets_graines .= "LEFT JOIN (SELECT CODESACHETGRAINE AS idSachetSortie, COUNT(*) AS nbSorties FROM sortie WHERE CODESACHETGRAINE IS NOT NULL GROUP BY CODESACHETGRAINE) nbs ON nbs.idSachetSortie = sa.CODESACHETGRAINE ";
	$query_recuperation_liste_sachets_graines .= "INNER JOIN entree en ON en.SAC_CODESACHETGRAINE = sa.CODESACHETGRAINE AND en.DATEENTREE = (SELECT MIN(DATEENTREE) FROM entree WHERE SAC_CODESACHETGRAINE = sa.CODESACHETGRAINE) ";
	$query_recuperation_liste_sachets_graines .= "LEFT JOIN sortie so ON so.CODESACHETGRAINE = sa.CODESACHETGRAINE AND so.DATESORTIE = (SELECT MAX(DATESORTIE) FROM sortie WHERE CODESACHETGRAINE = sa.CODESACHETGRAINE) ";
	$query_recuperation_liste_sachets_graines .= "INNER JOIN taxon t ON t.CODETAXON = sa.CODETAXON ";
	$query_recuperation_liste_sachets_graines .= "LEFT JOIN est_de_famille l1 INNER JOIN famille f ON f.CODEFAMILLE = l1.CODEFAMILLE ON l1.CODETAXON = t.CODETAXON AND l1.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_sachets_graines .= "LEFT JOIN appartient_a_genre l2 INNER JOIN genre g ON g.CODEGENRE = l2.CODEGENRE ON l2.CODETAXON = t.CODETAXON AND l2.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_sachets_graines .= "LEFT JOIN est_de_espece l3 INNER JOIN espece e ON e.CODEESPECE = l3.CODEESPECE ON l3.CODETAXON = t.CODETAXON AND l3.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_sachets_graines .= "LEFT JOIN est_de_sous_espece l33 INNER JOIN sous_espece sesp ON sesp.CODESOUSESPECE = l33.CODESOUSESPECE ON l33.CODETAXON = t.CODETAXON AND l33.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_sachets_graines .= "LEFT JOIN a_comme_variete l4 INNER JOIN variete v ON v.CODEVARIETE = l4.CODEVARIETE ON l4.CODETAXON = t.CODETAXON AND l4.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_sachets_graines .= "WHERE 1 ";
	// Si l'utilisateur a saisi des options
	if($optionsSet){
		if(isset($_POST['opt_seulNonVide']) || isset($_GET['opt_seulNonVide'])){
			$query_recuperation_liste_sachets_graines .= "AND (sa.QUANTITEGRAINESDISPONIBLES > 0 OR sa.QUANTITEGRAINESDISPONIBLES IS NULL) ";
		}
		if(isset($_POST['opt_seulDispo']) || isset($_GET['opt_seulDispo'])){
			$query_recuperation_liste_sachets_graines .= "AND (nbEntrees > nbSorties OR nbSorties IS NULL) ";
		}
	}
	$query_recuperation_liste_sachets_graines .= "ORDER BY ".$triBDD." ";
	$query_recuperation_liste_sachets_graines .= "LIMIT ".(($page-1)*$GLOBALS['CONFIG']['nbParPage']).", ".($GLOBALS['CONFIG']['nbParPage'])." ";
	
	$result_recuperation_liste_sachets_graines = mysql_query($query_recuperation_liste_sachets_graines, $connexion) or logError("RECUPERATION LISTE SACHETS GRAINES-".$query_recuperation_liste_sachets_graines."-".mysql_error());
	
	$lst_sachets_graines = array(); // on créé un tableau qui contient la liste des sachets de graines ainsi que les informations de chacun
	$nb_sachets_graines = 0;
	while($tab_recuperation_liste_sachets_graines = mysql_fetch_assoc($result_recuperation_liste_sachets_graines)){
	
		$lst_sachets_graines[$nb_sachets_graines] = $tab_recuperation_liste_sachets_graines;
		$nb_sachets_graines++;
		
	}

	mysql_free_result($result_recuperation_liste_sachets_graines);

?>
<a name="liste"></a>
<h2>Liste des sachets de graines</h2>

<?php 

   $tabth = array ('N°Entrée','Taxon','Statut');
   
   $extraIcon = array();
   
   for($i=0;$i<$nb_sachets_graines;$i++){
      
		$vide = false;
      $extraIcon[$i] =''; 

      
      if($lst_sachets_graines[$i]['nbEntrees'] > $lst_sachets_graines[$i]['nbSorties']){
			if(!is_null($lst_sachets_graines[$i]['quantite'])){
				if($lst_sachets_graines[$i]['quantite'] > 0){
					$statut = "<span style=\"font-weight: bold; color: #00AA00;\">disponible</span>";
			}else{
					$statut = "<span style=\"font-weight: bold; color: #FF0000;\">vide</span>";
					$vide = true;
				}
			}else{
				$statut = "<span style=\"font-weight: bold; color: #00AA00;\">disponible</span>";
			}
		}else{
			if(!is_null($lst_sachets_graines[$i]['sachets_grainesortant'])){
				if(!is_null($lst_sachets_graines[$i]['pretSortant'])){
					$statut = "<span style=\"font-weight: bold; color: #00AAFF;\">prêté</span>";
				} else {
					$statut = "<span style=\"font-weight: bold; color: #FF0000;\">sorti</span>";
				}
			}else{
				$statut = "<span style=\"font-weight: bold; color: #FF0000;\">archivé</span>";
			}
		}
      
      if(is_null($lst_sachets_graines[$i]['pretEntrant'])){
			if(is_null($lst_sachets_graines[$i]['nbSorties']) || $lst_sachets_graines[$i]['nbEntrees'] > $lst_sachets_graines[$i]['nbSorties']){
				if($GLOBALS['USER']['level'] >= 3 || $GLOBALS['USER']['admin']){ // l'utilisateur a le droit d'ajouter
					if(!$vide){
						$extraIcon[$i] = " - <a href=\"index.php?p=gestion/sachetgraines_plante&amp;id=".$lst_sachets_graines[$i]['id']."\"><img src=\"images/planter.png\" title=\"Indiquer la plantation dans un semis\" alt=\"Planter\" /></a>";
					}
					if($GLOBALS['USER']['level'] >= 4 || $GLOBALS['USER']['admin']){ // l'utilisateur a le droit de modifier
						$extraIcon[$i] .= " - <a href=\"index.php?p=gestion/sortie_ajoute&amp;sach=".$lst_sachets_graines[$i]['id']."&amp;oglt1=1\"><img src=\"images/sortie.png\" title=\"Indiquer la sortie du sachet de graines\" alt=\"Sortir\" /></a>";
					}
				}
			}else{
				if($GLOBALS['USER']['level'] >= 4 || $GLOBALS['USER']['admin']){ // l'utilisateur a le droit de modifier
					$extraIcon[$i] = " - <a href=\"index.php?p=gestion/sachetgraines_annule&amp;id=".$lst_sachets_graines[$i]['id']."\"><img src=\"images/annuler.png\" title=\"Annuler la sortie du sachet de graines\" alt=\"Annuler sortie\" /></a>";
				}
			}
		}
      
   
      $tab_result[$i] = array (  htmlentities($lst_sachets_graines[$i]['id'], ENT_NOQUOTES, "UTF-8"),
                                 htmlentities($lst_sachets_graines[$i]['reference'], ENT_NOQUOTES, "UTF-8"),
                                 "(".htmlentities(capitalise($lst_sachets_graines[$i]['famille']), ENT_NOQUOTES, "UTF-8").") <b>".htmlentities(capitalise($lst_sachets_graines[$i]['genre']), ENT_NOQUOTES, "UTF-8")." ".htmlentities($lst_sachets_graines[$i]['espece'], ENT_NOQUOTES, "UTF-8")." ".htmlentities($lst_sachets_graines[$i]['sousespece'], ENT_NOQUOTES, "UTF-8")."</b> <i>".htmlentities($lst_sachets_graines[$i]['variete'], ENT_NOQUOTES, "UTF-8")."</i>",
                                 $statut );
   
   }

   
   displayListe("sachetgraines",750,$nb_total_sachets_graines,$optionsURL,'',1,$extraIcon);



?>


<div class="options" style="margin-left: auto; margin-right: auto; width: 750px">
	<span id="indOF_options"><?php if($optionsSet) echo "▼"; else echo "►"; ?></span> <a href="#liste" onclick="ouvrirFermerTXT('lst_options', 1, 'indOF_options', '▼', '►'); return false;">Options</a>
	<div id="lst_options" style="display: <?php if($optionsSet) echo "block"; else echo "none"; ?>;">
		<form id="frm_options" method="post" action="index.php?p=gestion/SACHETGRAINE_gere&amp;l=<?php echo $page; ?>&amp;t=<?php echo $tri; ?>&amp;o=<?php echo $ordre; ?>#liste">
			<input type="checkbox" name="opt_seulDispo" onchange="document.getElementById('frm_options').submit();" <?php if(isset($_POST['opt_seulDispo']) || isset($_GET['opt_seulDispo'])) echo "checked=\"checked\""; ?> /> <label>Seulement les sachets de graines au jardin</label><br />
			<input type="checkbox" name="opt_seulNonVide" onchange="document.getElementById('frm_options').submit();" <?php if(isset($_POST['opt_seulNonVide']) || isset($_GET['opt_seulNonVide'])) echo "checked=\"checked\""; ?> /> <label>Seulement les sachets de graines non-vides</label>
		</form>
	</div>
</div>
<br />
<div class="information">
	<div class="titre">Définition</div>
	<h4>Sachet de graines :</h4>
	<p>Un sachet de graines est un sachet regroupant un seul type de graine.</p>
</div>
<div class="information">
	<div class="titre">Information</div>
	<h4>Actions bloquées :</h4>
	<p>
		Vous ne pouvez pas planter ou faire sortir des sachets de graines qui sont prêtés par une structure. Utilisez la page <a href="index.php?p=gestion/pretentrant_gere">Gerer prêts</a> pour indiquer le retour du sachet de graines à la structure d'origine.<br />
		Vous ne pouvez pas planter des graines d'un sachet marqué comme étant vide.
	</p>
</div>
<?php
//------------------------------------------------------------ Accès refusé à la page

	}else{
	
		if(isset($_SESSION)){
			include("pages/401.htm");
		}
	
	}

?>